Gradual Soundness: Lessons from Static Python
نویسندگان
چکیده
Context: Gradually-typed languages allow typed and untyped code to interoperate, but typically come with significant drawbacks. In some languages, the types are unreliable; in others, communication across type boundaries can be extremely expensive; still others only limited forms of interoperability. The research community is actively seeking a sound, fast, expressive approach gradual typing. Inquiry: This paper describes Static Python, language developed by engineers at Instagram that has proven itself reasonably production. Python's essentially programmer-tunable combination concrete transient approaches from literature. Concrete provide full soundness low performance overhead, impose nonlocal constraints. Transient sound shallow sense easier use; they help bridge gap between code. Approach: We evaluate its current state develop model captures essence types. draw upon personal communication, bug reports, Python regression test suite this model. Knowledge: Our main finding arises mix an effective way lower maintenance cost approach. also find method-based JIT technology eliminate costs On more technical level, two contributions: evaluation Python. process formalization found several errors implementation, including fatal errors. Grounding: implemented PLT Redex tested using property-based tests 265 suite. includes small core convey ideas soundness. claims based on production experience web server. Migrations server have caused 3.7\% increase requests handled per second maximum CPU load. Importance: first whose piece-meal application realistic codebase consistently improved performance. Other designers may wish replicate approach, especially those who currently maintain unsound path
منابع مشابه
Computational soundness of static equivalence
Privacy related properties in electronic voting are naturally expressed as indistinguishability properties. This motivates the study of observational equivalence, as well as static equivalence in the context of the AVOTÉ project. In this report we survey the existing results on the computational soundness of symbolic indistinguishability relations in the presence of a passive adversary, for whi...
متن کاملAdaptive Soundness of Static Equivalence
We define a framework to reason about implementations of equational theories in the presence of an adaptive adversary. We particularly focus on soundess of static equivalence. We illustrate our framework on different equational theories: symmetric encryption, modular exponentiation and also joint theories of encryption and modular exponentiation. Finally, we define a model for symbolic analysis...
متن کاملA Static Type Inference for Python
Dynamic languages, like Python, are attractive because they guarantee that no correct program is rejected prematurely. However, this comes at a price of losing early error detection, and making both code optimization and certification harder tasks when compared with static typed languages. Having the static certification of Python programs as a goal, we developed a static type inference system ...
متن کاملStatic and Dynamic Method Unboxing for Python
The Python programming language supports object-oriented programming using a simple and elegant model that treats member variables, methods, and various metadata as instances of a single kind of ‘attribute’. While this allows a simple implementation of an interpreter that supports advanced metaprogramming features, it can inhibit the performance of certain very common special cases. This paper ...
متن کاملStatic and Dynamic Method Unboxing for Python
The Python programming language supports object-oriented programming using a simple and elegant model that treats member variables, methods, and various metadata as instances of a single kind of ‘attribute’. While this allows a simple implementation of an interpreter that supports advanced metaprogramming features, it can inhibit the performance of certain very common special cases. This paper ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: The art, science, and engineering of programming
سال: 2022
ISSN: ['2473-7321']
DOI: https://doi.org/10.22152/programming-journal.org/2023/7/2